干货|如何处理不均衡数据?
如何处理不均衡数据?
今天让我们聊聊在机器学习中遇到了一些不均衡数据的时候,我们应该怎么做.
不均衡的数据通常来说形式都比较固定,并且也比较好区分.比如说你手头上现在有苹果和梨,在这个时候你手中的数据都跟你说,全世界的人都吃梨哦,这个时候你去找一个路人甲,问问他你是不是喜欢吃梨啊,这个时候我们大多数人都会猜测,这个人会吃梨,这个时候梨就可以作为优势数据变得很骄傲了.
这个时候,让我们来引入今天的问题,如何处理不均衡数据.
其实不均衡的数据理解预测起来很简单,永远都是预测多的数据的那一方,这样准没错,特别是数据多很多的情况的那一方,比如多的占了90%,少的占10%.只要每一次都预测多的那一批数据,预测的准确性就可以达到90%了。
没错,这样听起来是不是有点偷懒的感觉呢?其实机器也懂得这些小伎俩,所以经过训练以后,机器也变得精明了,每一次都预测多的那部分数据,但是这样是不可以的!接下来我们来谈谈解决这个问题的几种方法
1 方法1:想办法获取更多的数据首先我们要想一想我们是否可以获取更多的数据,有的时候我们在获取数据的前期,通常数据会呈现一个变化的趋势,这时候表现为某一种数据量偏多,等到数据的后半段的时期,数据的变化的趋势可能就会不一样了。
如果没有获取后半期的数据,从整体来看,预测就可能不会那么的精准.所以想办法获得更多的数据有可能会改善这个情况~
2 方法2:换一种评判方式通常情况下,我们会使用准确率(Accuracy)和误差(Cost)两种方式来判断机器学习的成果.但是在不均衡的数据面前,高的准确率和低的误差就显得没有那么有用和重要了.
所以我们就可以换个方式去计算,很多时候我们会使用Confusion Matrix去计算Precision&Recall,然后在通过Precision&Recall去计算F1 Score(or F-score).通过这样的数据,我们可以很大程度上去区分不均衡数据,并且可以给出更好的分数.因为我水平的问题,具体的计算推理过程等我日后会进行推导!(立flag)
第三种方法相对来说最为简单粗暴,对不均衡的数据进行重新组合,使之均衡。
第一种方式是复制少数数据里的样本,使其可以达到和多数数据样本差不多的数量。
第二种方式就是对多数样本的数据进行开刀,砍掉一些多数样本的数据,还是使两者的数量差不多
在使用一些机器学习的方法中,比如神经网络,在面对不均衡数据的时候都是束手无策的,但是像决策树这样的方法就不会受到不均衡数据的影响
在所有方法中,最具有创造力的方法莫过于这个修改算法了,如果你使用的是Sigmoid函数,他会有一个预测的门槛,如果低于门槛,预测的结果为梨,如果超过了门槛,预测的结果为苹果。
不过因为现在梨的数量过多,这个时候我们就需要调解下门槛的位置,使得门槛更加的偏向于苹果这一边,只有数据非常准确的情况下,模型才会预测为苹果,从而使机器学习学习到更好的效果.
好了,这就是这一篇文章的一些简单概括,如果大家想要学习更多的机器学习的知识,欢迎关注学妹的简书频道~见原文链接~
投稿请联系m15840540712@163.com
近期文章预告!
《通俗讲解为什么神经网络参数初始化不能全0的原因》
《通俗讲解隐马尔科夫模型(HMM)-后向算法》
《通俗讲解隐马尔科夫模型(HMM)-维特比算法》
近期毕业比较忙~推送可能较晚,但是只要推送的都是干货额~
推荐阅读文章!
全是通俗易懂的硬货!只需置顶~欢迎关注交流~